home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / ADDON.PAK / PRJWIN.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  3KB  |  107 lines

  1. #ifndef __PRJWIN_H
  2. #define __PRJWIN_H
  3. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4.  
  5.   prjwin.h
  6.   Created: 12/1/95
  7.   Copyright (c) 1995, Borland International
  8.   $Revision:   1.16  $
  9.  
  10. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  11.  
  12. #include <commctrl.h>
  13. #include <ideaddon\imake.h>
  14. #include <ideaddon\itool.h>
  15.  
  16. /****************************************************************************
  17. * TreeController
  18. *
  19. ****************************************************************************/
  20.  
  21. class TreeController {
  22. public:
  23.   TreeController();
  24.   ~TreeController();
  25.  
  26.   HWND        InitWindow(HWND hwndParent);
  27.   unsigned    AddBranch(HTREEITEM tiParent, ProjectNode node);
  28.   BOOL        AddTreeViewItems();
  29.   HTREEITEM  AddOneItem(HTREEITEM hParent, LPCSTR szText, HTREEITEM hInsAfter, int iImage, LPARAM lParam);
  30.  
  31.   HTREEITEM  FindItem(HTREEITEM hitem, ProjectNode node);
  32.   ProjectNode GetNodeFromItem(HTREEITEM ti);
  33.   HTREEITEM  GetItemFromNode(ProjectNode node);
  34.   void        OnExpanded(LPNM_TREEVIEW lpNMTreeView);
  35.  
  36.   void        SetImage(HTREEITEM  ti, unsigned idxImage);
  37.   void        GetItem(HTREEITEM ti, TV_ITEM& item, unsigned mask);
  38.   void        SetTopNode(ProjectNode topNode);
  39.   ProjectNode GetTopNode() { return d_topNode; };
  40.   void        DeleteTreeItem(ProjectNode node);
  41.   void        AddNode(ProjectNode node);
  42.   void        RemoveNodeFromProject(ProjectNode node);
  43.   void        AddNodeToProject(ProjectNode node, char* name);
  44.  
  45.   HWND            d_hwnd;  // handle to the tree view window
  46.  
  47. protected:
  48.   IProjectServer* d_projectServer;
  49.   ProjectNode    d_topNode;
  50.  
  51.   // image list indices
  52.   int d_idxCloseFolder, d_idxOpenFolder, d_idxFile, d_idxRoot;
  53. };
  54.  
  55.  
  56. class TreeModel {
  57. public:
  58.   TreeModel(HWND hwnd);
  59.   ~TreeModel();
  60.  
  61.   void            SetSelected(HTREEITEM item);
  62.   void            OnCommand(WORD wID, WORD wNotifyCode);
  63.   TreeController* GetController();
  64.   void            Attach(TreeController* tc);
  65.   ProjectNode    GetSelectedNode();
  66.   void            Resize(int w, int h);
  67.   void            SetTopNode(ProjectNode topNode);
  68.   ProjectNode    GetTopNode();
  69.   void            SetProjectViewClient(IProjectViewClient*);
  70.  
  71.   void            OnNodeDeleted(ProjectNode node);
  72.   void            OnNodeAdd(ProjectNode node);
  73.  
  74.   BOOL            GetNewNodeName(char* buf, int bufSize);
  75.  
  76.   HWND            d_hwnd;
  77.  
  78. protected:
  79.   IMakeServer*    d_makeServer;
  80.   IToolServer*    d_toolServer;
  81.   HTREEITEM      d_selectedItem;
  82.   TreeController* d_tc;
  83.   IProjectViewClient* d_client;
  84. };
  85.  
  86. inline TreeController* TreeModel::GetController() {
  87.   return d_tc;
  88. };
  89.  
  90. inline void TreeModel::Attach(TreeController* tc) {
  91.   d_tc = tc;
  92. };
  93.  
  94. inline void TreeModel::SetTopNode(ProjectNode topNode) {
  95.   d_tc->SetTopNode(topNode);
  96.   d_tc->AddTreeViewItems();
  97. };
  98.  
  99. inline ProjectNode TreeModel::GetTopNode() {
  100.   return d_tc->GetTopNode();
  101. };
  102.  
  103. #define GetTreeModelFromHWND(hWnd) ((TreeModel*)GetWindowLong(hWnd, GWL_USERDATA))
  104.  
  105. #endif
  106.